Caching web resources using varied replacement sttrategies and storage

ABSTRACT

Various methods of caching web resources include caching in accordance with a number of times accessed, a frequency of access, or a duration of access. One method of caching web resources includes the step of accessing a first web resource. The first web resource is cached, if no other web resource is accessed after a pre-determined period of time. Another method of caching web resources includes the step of accessing a first web resource. The first web resource is cached, if the first web resource is subsequently accessed more than a pre-determined number of times. Another method of caching web resources includes the step of accessing a plurality of web resources. The accessed web resources are cached as cached web resources in accordance with at least one of a number of times accessed, a frequency of access, or a duration of access. An apparatus comprises storage media containing caching logic for caching web resources. The caching logic includes instructions to cache selected web resources as cached web resources in accordance with at least one of a number of times accessed, a frequency of access, or a duration of access. The selected web resources correspond to a subset of a plurality of accessed web resources.

FIELD OF THE INVENTION

[0001] This invention relates to the field of computers. In particular,this invention is drawn to caching web resources obtained from theInternet.

BACKGROUND OF THE INVENTION

[0002] The Internet is a worldwide network of computers and computerresources sharing a common communication protocol to facilitate thecommunication of information between computers that may have differenthardware and software architectures including different operatingsystems and file systems.

[0003] The Internet uses a client/server architecture for exchanginginformation. A client computer requests resources from one or more hostcomputers somewhere on the Internet. These resources may include filesor services such as information retrieval services, search services,communication services, and recreational services.

[0004] A subset of Internet host computers provide multimediainformation services. This subset of host computers support a protocolwhich permits sharing hypermedia documents between computers havingdifferent architectures, operating systems, and file systems. Thesehypermedia documents can be viewed or accessed using a “browser”application program on the client computers.

[0005] The World Wide Web is a wide-area hypermedia informationretrieval initiative aiming to give universal access to a large universeof information stored in computers that use different hardware andsoftware architectures. Hypermedia is similar to multimedia except thathypermedia contains “hyperlinks” or simply “links” to other informationincluding text, sounds, images, movies, etc. The information may beembodied in the form of a document. The “web” is virtually formed bythese hyperlinks. Thus the “web” refers to a body of information orabstract space of knowledge. Physical access to this body of informationis frequently accomplished using the Internet. A hypermedia documentviewed using a browser is often referred to as a “web page.”

[0006] Web pages often contain links to other web resources. Forexample, a web page may contain a link to another position within thesame web page, another web page located somewhere else on the Internet,or links to initiate other services such as searching or file retrieval.These other web resources, for example, can be files designed to producesounds or movies. The link destination is identified by a UniformResource Locator (URL). Every WWW resource located anywhere on theInternet can be identified by a URL.

[0007] Using these links within documents, a user may navigate tovarious web pages located throughout the Internet by following a chainof links. After following a chain of links, a user may need to return toa common page to select another chain of links to follow. This may bethe case when exploring a web site or when searching the World Wide Webfor sites related to a given topic.

[0008] For example, when a client computer issues a search request to ahost computer, the host may respond by creating a web page containinglinks to sites containing information relevant to the user's query. Thisweb page is referred to as the common page. The user may choose tofollow a given link from the common page. After reviewing the web pageassociated with the selected link, the user can typically return to thecommon page to pursue another link. For example, the user may return tothe common page in order to pursue links to other web pages that wereindicated as being relevant to a search request.

[0009] One disadvantage of current browsers is the lack of sophisticatedheuristics for caching web pages and other resources. In one cachingscheme the browser caches web pages on a first-in-first out basis. Thenumber of web pages cached is dependent upon the resources (i.e.,storage requirements) of each web page as well as the amount of storageset aside for caching web pages. If the common page is not cached, theweb browser must access the host's search engine again in order toregenerate the common page.

[0010] This caching technique has a number of disadvantages. Onedisadvantage of this technique is the inefficient use of the hostmachine resources. In particular, the client computer wastes hostcomputer time by requesting the host computer to regenerate the commonweb page each time it is accessed. Another disadvantage of regeneratingthe common page is the time wasted by the client waiting forregeneration and retrieval of the common web page. Yet anotherdisadvantage is the increased Internet traffic associated with reissuingthe saved URL and retrieving the generated common page from the hostmachine's search engine. press Mail Label: EM 531554887 US 3 AttorneyDocket No: 42390.P4101

SUMMARY OF THE INVENTION

[0011] A method of caching web resources includes the step of accessinga first web resource. The first web resource is cached, if no other webresource is accessed after a pre-determined period of time.

[0012] Another method of caching web resources includes the step ofaccessing a first web resource. The first web resource is cached, if thefirst web resource is subsequently accessed more than a pre-determinednumber of times.

[0013] Another method of caching web resources includes the step ofaccessing a plurality of web resources. The accessed web resources arecached as cached web resources in accordance with at least one of anumber of times accessed, a frequency of access, or a duration ofaccess.

[0014] An apparatus includes storage media containing caching logic forcaching web resources. The caching logic includes instructions to cacheselected web resources as cached web resources in accordance with atleast one of a number of times accessed, a frequency of access, or aduration of access. The selected web resources correspond to a subset ofa plurality of accessed web resources.

[0015] Other features and advantages of the present invention will beapparent from the accompanying drawings and from the detaileddescription that follows below.

BRIEF DESCRIPTION OF THE DRAWINGS

[0016] The present invention is illustrated by way of example and notlimitation in the figures of the accompanying drawings, in which likereferences indicate similar elements and in which:

[0017]FIG. 1 illustrates a client-server architecture networked computerenvironment.

[0018]FIG. 2 illustrates one embodiment of a client computer.

[0019]FIG. 3 illustrates a web page and hyperlinks to other webresources.

[0020]FIG. 4 illustrates navigation within a web page having hyperlinksto itself.

[0021]FIG. 5 illustrates one embodiment of a method of caching webresources such as a web page.

[0022]FIG. 6 illustrates an embodiment of another method of caching webresources such as a web page.

[0023]FIG. 7 illustrates a method of caching a first web resource suchas a web page after a request to access a second web resource isreceived.

[0024]FIG. 8 illustrates retrieval of cached web resources such as webpages.

DETAILED DESCRIPTION

[0025]FIG. 1 illustrates a network environment 100 including acommunication network commonly referred to as the Internet 150. TheInternet includes a combination of routers, repeaters, gateways,bridges, and communications links with computers spread throughout theworld. The Internet facilitates communication between computers or otherdevices connected to the Internet.

[0026] Some of the computers are referred to as host computers becausethey provide services upon request. The computers issuing the requestsare referred to as client computers.

[0027] Network environment 100 includes multiple (N) client computers(110 thru 120) and multiple (M) host computers (130 thru 140).

[0028] In one embodiment, computers may use an Internet Service Provider(ISP) to gain access to the Internet. For example, clients 110 and 112use ISP(1) 160 to access the Internet. Client 120 uses ISP(X) 170 toaccess the Internet.

[0029] Host computers such as hosts 132 and 140, for example, can bedirectly connected to the Internet. Alternatively, a host computer(e.g., 130) may use an ISP (e.g., 162) to gain access to the Internet.

[0030] The host computers (e.g., 130) and client computers (e.g., 110)can be entirely different architectures, however, they can communicateby using a common communication protocol. In one embodiment, thisprotocol is the Transmission Control Protocol/Internet Protocol(TCP/IP).

[0031]FIG. 2 illustrates one embodiment of a client computerarchitecture. Client computer 200 includes processor 210. Input devicessuch as mouse 220 and keyboard 230 permit the user to input data toclient computer 200. Information generated by the processor is providedto an output device such as display 240. Client computer 200 typicallyincludes random access memory (RAM) 260 which is used by the processorfor executing application programs.

[0032] In one embodiment, client computer 200 includes nonvolatilememory 270. Nonvolatile memory 270 is used to retain programs and dataeven when the client computer is powered down. In one embodimentnonvolatile memory 270 is an electro-mechanical hard drive. In otherembodiments, nonvolatile memory 270 might be a solid state disk drive ora flash electrically erasable programmable read only memory (flashEEPROM).

[0033] Mouse 220, keyboard 230, RAM 260, and nonvolatile memory 270 aretypically communicatively coupled to processor 210 through one or moreaddress and data buses such as bus 250.

[0034] The client computer can request services from a host computer.Hosts typically provide services such as file retrieval services, searchservices, communication services, and recreational services.

[0035] For example, Gopher provides information retrieval services.Popular search services include Archie. Veronica is the name of anothersearch service typically used in conjunction with Wide Area InformationServers (WAIS). Communication services include electronic mail, UseNet,Telnet, and Internet Relay Chat (IRC). An example of a recreationalservice is a Multi-User Dungeon (MUD).

[0036] A subset of Internet host computers provide multimediainformation services. This subset of host computers permit physicalaccess to the abstract body of information referred to as the World WideWeb (WWW) and are referred to as WWW hosts or WWW servers.

[0037] World Wide Web host computers support a protocol which permitsusers having computers with different architectures, operating systems,and application programs to share multimedia enhanced documents. In oneembodiment, this protocol is the Hypertext Transport Protocol (“HTTP”).The multimedia enhanced documents are often referred to as “web pages.”The application specific to a given hardware platform that permitsviewing the web pages is often referred to as a browser.

[0038] Hypermedia enhanced documents typically provide links (i.e.,hyperlinks) to other resources in response to selection of an anchor.The anchor is typically a word, group of words, image, or somedemarcated area of the document. For graphical-based browsers, theanchor is generally activated by pointing to the anchor and clicking aselection button of a pointing device such as a mouse. For text-basedbrowsers, the anchor is generally activated by using cursor-control keysto select the anchor and pressing another key (e.g., <ENTER>). Theseanchors and links are defined using a language such as hypertext markuplanguage (“HTML”). The browser interprets an HTML file to display theweb page. The HTML file also determines what resource is accessed inresponse to activation of a given anchor.

[0039] Uniform Resource Locators (URLs) provide a standard way ofreferencing Internet resources including web resources regardless ofwhether the resource is a document, an image, a movie, a sound, oranother web page. A browser, for example, can access a host machineidentified by the URL and then retrieve the resource specified by theURL. A uniform resource locator (URL) is a description of an itemincluding the location of the item that is to be retrieved. For example,the location might be the local disk drive or another file at anotherInternet site. The URL is not limited to other World Wide Web sites andmay in fact refer to other Internet protocols and services such asGopher, WAIS, UseNet news, Telnet, or anonymous FTP (file transferprotocol).

[0040] A URL identifies the protocol as well as the location of the itemto be retrieved. For example, consider the following URL:

[0041] http://www.intel.com/intel/product/index.html This URL identifiesthe protocol as “http” (“Hypertext Transport Protocol”). Other protocolsinclude “gopher” (to initiate a Gopher session), “ftp” (to initiate afile transfer), “file” (to retrieve a local file), “wais” (for accessinga WAIS server), “news” (for reading UseNet newsgroups), and “telnet” forinitiating a Telnet session.

[0042] The portion “www.intel.com” is an Internet host address orsymbolic representation of an Internet host address. Thus“www.intel.com” identifies a specific host. The portion of the URLidentifying the specific host is often referred to as a web site.

[0043] The remainder is a UNIX-style path for the resource that is beingaccessed. Thus “intel/product/index.html” instructs a browser toretrieve the file index.html from the directory path “intel/product” onthe Internet host.

[0044] Often a user may simply provide the protocol and Internet hostaddress such as “http://www.intel.com” without explicitly identifying aspecific resource. The server software executing on the host machine,however, provides a default resource in response to such a request. Inone embodiment, this might be a file named “index.html” or “index.htm”for machines having file systems that do not support longer filenameextensions. Thus the use of the web site alone implicitly identifies adefault resource. For web pages, this default resource is often referredto as the “home page.” Alternatively, the home page may be explicitlydefined. Thus the URL either explicitly or implicitly identifies aspecific resource, protocol, and host machine on the Internet.

[0045] A given web page may be formed from a number of resourcesidentified within the web page's html file. For example, “index.html”contains instructions for generating a hypermedia document for theclient. The client's browser interprets the html file in order toproduce the corresponding web page. The html file may instruct theclient's browser to access any number of other web resources located onthe host or elsewhere including bitmap files, files for producinganimated video or sound, etc. Each of these resources is identifiedeither explicitly or implicitly by a URL.

[0046]FIG. 3 illustrates one example of using URLs to access otherInternet resources. Web page 300 includes anchors 302 and 304 foraccessing other web resources. Anchors are often identified byhighlighted text, an icon, or an image on the web page. In oneembodiment, the web page is defined using hypertext markup language(“HTML”) to describe the text, icons, images, etc. of the web page.

[0047] The highlighted text, icon, or image is associated with a URL.This association is the hyperlink. Often the terms “hyperlink” or “link”are used synonymously with the term “anchor.” Thus “anchor 302” isequivalent to “link 302,” or “hyperlink 302.”

[0048] Selecting an anchor effectively selects and follows the hyperlinkto the resource identified by the associated URL. Selecting anchors 302or 304, for example, will access other Internet resources that may bephysically located in various host computers throughout the Internet.The selection is typically accomplished with a pointing device such as amouse.

[0049] For some applications (i.e., searching) users often re-visit webpages previously visited. For example, the user may have used anInternet search engine to generate a web page containing the results ofa search. This resulting web page may contain a number of links to otherweb pages. Users typically select links one at a time from the resultingweb page. After following a given link, the user returns to theresulting web page in order to follow another link suggested by thesearch engine. Thus the web page resulting from the search may bevisited a number of times.

[0050] Referring to FIG. 3, web page 300 provides hyperlinks generatedas a result of a search. Web page 310 is accessed by selecting hyperlink302. From web page 310, the user can access web page 320 by selectinganchors 314 or 312. Anchor 312 is an example of using an image or anicon as an anchor. From web page 320, the user can select anchor 322 toreturn to web page 310. Thus the user can follow or navigate a chain oflinks by selecting the anchors.

[0051] After perusing web pages 310 and 320, the user can return to webpage 300 in order to follow another link identified by the searchresults. For example, the user can return to the search results web page300 in order to follow the chain of links starting with hyperlink 304.Selection of anchor 304 accesses web page 330. From web page 330, theuser can access web page 340 by selecting anchor 336. The user canreturn to web page 330 by selecting anchor 342 on web page 340. Web page330 also contains hyperlinks to web page 310. Thus the user can accessweb page 310 by selecting anchor 332.

[0052] Web page 300 may be referred to as the “common page.” Web page300 is the common link to all of the other links contained within webpage 300. For example, web page 300 provides access to the chain oflinks beginning with link 302 and the chain of links beginning with 304regardless of whether or how those chains might subsequently intersect.

[0053] In order to facilitate following links, browsers typically savethe URL of the most recently accessed web pages. The user can navigate“forward” and “backward” among their most recently selected web pageseven if the web pages do not contain specific links to each other. Thusfor example, web page 330 provides a link to web page 310, but theconverse is not true. The browser provides means to navigate “backward”and “forward” among the most recently selected web pages. Thus, forexample, if web page 310 was accessed from web page 330, the user canreturn to web page 330 by navigating backward using features of thebrowser. This type of approach may be necessary in order to return tosearch page 300 after following a chain of links.

[0054]FIG. 4 illustrates an example of following hyperlinks to anotherlocation within the same web page. Web page 400 can only be viewed aportion at a time due to the actual size of the display as indicated byoutline 420. In addition to text, web page 400 includes anchors 440 and450 to other resources.

[0055] In the illustrated embodiment, anchor 440 is an icon thatindicates that selection of anchor 440 will access a movie. In oneembodiment, the selection of anchor 440 accesses a file identified by anassociated URL. The browser recognizes the file as containing data forgenerating a movie. The browser either plays the movie in accordancewith the data or provides the file to another application in order toplay the movie.

[0056] Anchor 450 is an icon that indicates that selection of anchor 450will access a sound. In one embodiment, the selection of anchor 450accesses a file identified by an associated URL. The browser recognizesthe file as containing data for generating sound. The browser eitherinterprets the data to generate the sound or provides the file toanother application in order to generate the sound.

[0057] Web page 400 also provides an index to other locations within thesame web page. Selecting anchor 410, for example, repositions the webpage 400 within the viewing area of the display so that the user mightsee view 460. Due to the physical limitations of the displayable area,the browser typically provides a method of scrolling (e.g., scroll bars)so that the user may navigate within the same web page by scrolling.

[0058] The process of accessing a host machine and retrieving thespecified resource in accordance with the URL may take a considerableamount of time. In an effort to decrease the time spent waiting todownload web pages, browsers typically have a cache feature for cachingweb pages. When a URL specifies a web page that has previously beencached, the browser may retrieve the cached version of the web pageinstead of accessing the host machine again when re-visiting the webpage.

[0059] One caching mechanism attempts to cache every web page accessed.Web pages are cached on a first-in-first-out basis so that the mostrecently accessed non-cached web page can be cached.

[0060] One disadvantage of this method is inefficient usage of the cachemay result in excessive storage set aside for the cache. For example,web pages that are not likely to be re-visited are cached. Due to sizeconstraints of the cache, frequently re-visited web pages or web pageswith a high likelihood of being re-visited, such as common pages, mightbe flushed from the cache in order to permit caching the most recentlyaccessed web page. In order to provide a greater likelihood thatfrequently visited web pages remain within the cache, the cache size maybe increased. Increasing the cache size, however, consumes computerresources that could otherwise be allocated for other purposes.

[0061]FIG. 5 illustrates a method of caching web resources based on thelength of time spent browsing the web resource. In the embodimentillustrated in FIG. 5, the web resource is a web page.

[0062] The method of caching web resources begins with step 510. A firstweb page is accessed in step 520. If no other web page is selected aftera pre-determined period of time as determined in step 530, then thefirst web page is cached. Otherwise the first web page is not cached andprocessing is completed in step 590.

[0063] In one embodiment, the first web page is automatically cachedafter the pre-determined time period has elapsed, if no other web pageis selected.

[0064] In an alternative embodiment, the first web page is cached onlywhen a second web page has been selected after a pre-determined timeperiod.

[0065]FIG. 6 illustrates another method for caching web resources basedon the number of visits to a given web resource. In this embodiment theweb resource is a web page.

[0066] The method of caching web pages begins with step 610. A first webpage is accessed in step 620. If the same web page was previouslyaccessed a pre-determined number of times as determined by step 630,then the web page is cached in step 640 and processing is completed instep 690. Thus after the initial access, the first web page is cached ifit is subsequently accessed more than a pre-determined number of times.

[0067] Various techniques may be used to track the number of times aparticular web resource is accessed. For example, a table may be used.The table entries are indexed by a unique key such as the complete,explicit URL for each web resource. When a web resource is accessed, thetable is scanned to determine if that web resource already has acorresponding entry in the table by searching for that web resource'sURL in the table. If the web resource has not previously been accessed,then a new entry in the table is created using that web resource's URL.If the web resource has previously been accessed (as determined byscanning the table) then a count field associated with that webresource's URL in the table is incremented to reflect another access hasbeen made.

[0068] In one embodiment, a resource such as an html file might instructthe browser to generate a web page from a number of other resources. Insuch a case, an entry is created in the table for each web resourceaccessed.

[0069] In one embodiment, the count field is incremented only if thesubsequent accesses are interleaved with accesses to other webresources. Thus if the web resource being tracked is a web page,consecutive accesses that merely reposition the web page within thedisplay do not increase the count. Visiting another web page andsubsequently returning to the first web page will, however, increase thecount.

[0070] In one embodiment, the table and cache are erased andre-initialized upon starting the browser application. Thus web resourcesare cached based upon the number of times accessed within a givenbrowsing session. If this is the case, then the table is effectively afrequency table. In other words, the web resource is cached if the sameresource is accessed more than a pre-determined number of times within agiven browsing session. Thus the web resource is cached based uponfrequency of access.

[0071] In an alternative embodiment, the table and cache are erased andre-initialized when requested by the user. Thus web resources may becached based upon the total number of times accessed independent of thenumber of browsing sessions.

[0072] In yet another embodiment, the table provides for tracking therelative age of the cached web resource. If the resource has remained inthe cache beyond a pre-determined period of time, then the table entryfor that resource may be invalidated and the resource may be flushedfrom the cache. The relative age may be tracked in the table byproviding an additional field and storing the date and time that thecorresponding resource was cached. Alternatively, the field stores avalue that permits determining in what order the resources were cached.

[0073] Some browsers “cache” resources as they are being downloaded froma host. The methods described above may be applied to determine when andif resources should be flushed from the cache as opposed to whether theyare cached. In other words, the methods described above can be used todetermine the persistence of resources stored in the cache.

[0074] For example, consider a browser that caches resources as they aredownloaded. In one embodiment, the methods described above are appliedto determine which resources should remain in the cache when atriggering event initiates flushing of at least a portion of the cache.

[0075] In one embodiment, a triggering event is when the browser starts.In another embodiment, exiting the browser application is a triggeringevent. In another embodiment, flushing of at least a portion of thecache is initiated when the cache reaches a pre-determined size. In yetanother embodiment, flushing of at least a portion of the cache isinitiated whenever the cache has less than a pre-determined percentageof available space left.

[0076] Thus “caching” in the context of cache persistence means allowingthe resource to stay in the cache. Application of the methods describedabove to cache persistence permits applying the rules described aboveacross multiple browser sessions.

[0077] For example, a resource that is accessed infrequently during agiven browser session may persist in the cache under the total number ofaccesses rule, if a sufficient number of accesses occur before atriggering event flushes the resource, even if the accesses areaccumulated over more than one browser session. In one embodiment, thecount field associated with the URL of a given resource is incrementedeach time the given resource is accessed. If the value in the countfield is less than a pre-determined value when the triggering eventoccurs, then the resource is flushed from the cache.

[0078] Thus one method of persistence caching includes the step ofcaching at least one web resource of a plurality of web resourcesaccessed during a plurality of browser sessions. A count of the numberof accesses to each cached web resource is computed. Selected cached webresources are flushed in response to a triggering event, if thecorresponding count is less than a pre-determined value.

[0079] Similarly, the table may include a “session” field to aid intracking an average frequency of access across multiple browsersessions. Thus each time the browser is started up, the session field isincremented for all URL entries. The count field is incremented for agiven URL whenever access is made to the resource identified by thegiven URL. When a triggering event occurs, the average frequency ofaccess can be calculated$\left( {{e.g.},\frac{count}{sessions}} \right)$

[0080] for each URL to determine if the resource identified by the givenURL should remain in the cache or be flushed. If the average frequencyof access for a given URL is less than a pre-determined value at thetime a triggering event occurs, then the identified resource is flushed.

[0081] Thus another method of persistence caching includes the step ofcaching at least one web resource of a plurality of web resourcesaccessed during a plurality of browser sessions. An access count of thenumber of accesses to each cached web resource is computed. A sessioncount of the number of sessions a selected web resource is accessed iscomputed. Selected cached web resource are flushed in response to atriggering event, if the corresponding average frequency of accessdetermined by dividing the corresponding access count by thecorresponding session count is less than a pre-determined value.

[0082] The duration of access rule may also be used in the cachepersistence context. The table may be modified to include a “duration”field. When accessing a given resource, the length of time spent withoutaccessing any other resource is measured. This length of time is thenadded to the duration field. The duration field thus indicates theaccumulated time spent on the given resource. When a triggering eventoccurs, the given resource is flushed unless the accumulated time in theduration field exceeds a pre-determined value.

[0083] Thus a duration of access for persistence caching includes thestep of caching at least one web resource of a plurality of webresources accessed during a plurality of browser sessions. A length oftime spent without accessing any other resource is accumulated for eachcached web resource. Selected cached web resource are flushed inresponse to a triggering event, if the corresponding accumulated lengthof time is less than a pre-determined value.

[0084] In one embodiment, regardless of the caching rule applied, thetable entry identifying a given resource is deleted or marked invalidonce the given resource is flushed.

[0085] Referring to the client computer architecture illustrated in FIG.2, various storage media may be used for caching the web resources. Forexample, in one embodiment, the web resource is cached in RAM 260.

[0086] In an alternative embodiment, the web resource is cached usingnonvolatile storage such as nonvolatile memory 270. In one embodiment,nonvolatile memory 270 is a solid state disk. In another embodiment,nonvolatile memory 270 is flash electrically erasable programmable readonly memory.

[0087] When a web resource is cached it must be mapped to itscorresponding full URL. Otherwise a “name collision” may occur, forexample, if resources with the same name (e.g., “index.html”) aredownloaded from different sites.

[0088] This can be accomplished by caching the web resource andidentifying it directly by its full URL. In one embodiment, the full URLis expressed as a property of the file. Thus the file can be renamed toavoid name collisions, but identified for subsequent retrieval byexamining the file properties of the cached files.

[0089] In another embodiment, each entry of the caching table includes afield to identify the name of the resource as cached. Thus if theresource must be renamed due to a name collision, the name as cached isreadily available from the same table that indicates whether theresource was cached.

[0090] In another embodiment, a separate mapping table can be used tomap files as cached to their corresponding full URLs.

[0091] The web resource need not be cached locally on the clientcomputer. Referring to FIG. 2, for example, client 136 residing on localarea network 140 may cache the web resources on local area networkserver 144.

[0092]FIGS. 5 and 6 effectively indicate conditions that determine if anaccessed web resource should be cached, but not when the accessed webresource should be flushed. Accessed web resources can be flushed as theneed arises, if they are not cached or have not been selected forcaching. Eventually, even cached web resources may need to be flushed inorder to permit caching additional web resources. In one embodiment,cached web resources are flushed on a first-in, first-out basis. In thisembodiment, the use of a relative age field, as described above, permitstracking the order in which web resources were cached for purposes ofdetermining the order in which they should be flushed.

[0093] Thus methods of caching web resources based on duration ofaccess, number of times accessed, and frequency of access have beendescribed. Various embodiments may combine these methods of caching. Inparticular, the browser may be configured to apply caching rules inaccordance with the type of resource. For example, image files may beassociated with one caching rule. Text files might be associated with adifferent caching rule. In addition, once the determination is madewhether a resource should be cached, the resource may be cached at thattime or in response to a request to access another resource.

[0094]FIG. 7, for example, combines the methods presented above fordetermining if a web resource is selected for caching. The web resourceis not cached, however, until a request to access another web resourceis received. The method begins with step 710 using web pages as examplesof web resources.

[0095] In step 720, a first web page is accessed. In the embodimentillustrated in FIG. 7, this first web resource or web page is notpresently being cached.

[0096] In step 730, a request to access a second web page is received.In this context, the second web page is a web resource other than thefirst web page. Thus selecting an anchor on the first web page in orderto reposition the first web within the display is not considered to bereceiving a request to access another web resource or a “second” webpage.

[0097] After a request to access a second web page is received, themethod makes the determination of whether the first web resource shouldbe cached in steps 740 and 750. In particular, if the first web page waspreviously accessed a pre-determined number of times, as determined instep 740, then the first web page is cached in step 760. Alternatively,if a pre-determined time period has elapsed since accessing the firstweb page as determined in step 750, then the first web page is cached instep 760.

[0098] The requested resource, (i.e., the second web page) is notaccessed until step 770. Thus the second web page is not accessed untileither 1) a decision is made not to cache the first web page, or 2) adetermination is made to cache the first web page and the first web pageis cached.

[0099]FIG. 7 thus combines the methods of caching based on a duration ofaccess and a number of times the resource is requested. The resource isnot cached until a request to access another resource is received.

[0100]FIG. 8 illustrates one embodiment of a method of retrieving acached web resource. In step 810 a request is made to access a webresource, in particular a web page. Step 820 determines if the requestedweb page is in the cache. If the web page is not in the cache, then theweb resource is retrieved from the Internet in step 840. If, however,the web page is cached, then the browser retrieves the cached version ofthe web page instead of the actual web resource in step 830. Variousembodiments may permit the user to “refresh” the web page by retrievingit again from the host computer instead of retrieving the cached versionof the resource.

[0101] In one embodiment, the methods described above are implemented asa series of instructions within a program. The program may beimplemented in software, firmware, or hardware.

[0102] The firmware or hardware implementations may be particularlysuited for systems designed specifically to support Internet tools andapplications, and communication protocols. These machines are referredto as NC (“network computer”) machines.

[0103] One example of such a machine is the NC manufactured by OracleCorporation, Redwood Shores, Calif. The NC machines achieve hardwarecosts lower than that of a typical personal computer by offering fewcapabilities other than the ability to “browse” the Internet. As aresult, the machines typically do not have standard peripherals such asfloppy disk drives, hard disk drives, or optical disk drives, etc. Otherresources such as memory may be somewhat less than that found on a moreversatile typical personal computer.

[0104] The methods described above may be particularly suited formachines with such limited resources. The instructions for implementingthe methods described above may be stored within ROM, flash memory, orsome other nonvolatile memory within the NC hardware.

[0105] The software implementation may be incorporated within anotherapplication program. In one embodiment, for example, the instructionsmay be included as part of the browser. In another embodiment, theinstructions may be part of the operating system. The software itselfmay be stored or distributed on any variety of storage media includingoptical disks, magnetic disks, tapes, etc.

[0106] The methods described above are also applicable to “intranets.”An intranet is typically considered to be a network used within abusiness entity such as a corporation. Although the intranet is usuallyintended for internal use only, the business organization may permit theoutside Internet community to access all or a part of the intranet.

[0107] An intranet uses the same communication protocols and tools asthe Internet. Thus in one embodiment an intranet supports TCP/IP andInternet tools on an organization's local area network (LAN) orwide-area network (WAN). With reference to FIG. 1, LAN 180 is anintranet in one embodiment. The intranet offers the ability to leveragethe availability all of the tools and applications available for theInternet for the business organization's exclusive use with its ownnetwork system.

[0108] Thus, for example, different divisions within a corporate entitycan create their own web pages to announce employment opportunities, newproduct offerings, etc. The intranet web page might provide a front-endinterface to other information systems within the organization. Thiscould permit, for example, a finance or accounting division to retrieveaccounting information stored in a mainframe by using the web page as afront-end for accessing a mainframe database. The use of the cachingmethods described above may tend to improve response time at each clientcomputer. In addition, caching at each client computer tends to reduceoverall intranet traffic, thus leaving even more resources available forhandling additional clients or further improving the responsiveness tointranet client requests.

[0109] In the preceding detailed description, the invention is describedwith reference to specific exemplary embodiments thereof. Variousmodifications and changes may be made thereto without departing from thebroader spirit and scope of the invention as set forth in the claims.The specification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

What is claimed is:
 1. A method of caching web resources, comprising thesteps of: accessing a first web resource; and caching the first webresource, if no other web resource is accessed after a pre-determinedperiod of time.
 2. The method of claim 1 wherein the first web resourceis cached in a random access memory.
 3. The method of claim 1 whereinthe first web resource is cached in a nonvolatile memory.
 4. The methodof claim 3 wherein the nonvolatile memory is one of a magnetic disk anda flash electrically erasable programmable read only memory (flashEEPROM).
 5. The method of claim 1 further comprising the step of:accessing a web resource other than the first web resource; andretrieving the cached first web resource in response to a subsequentrequest to access the first web resource.
 6. The method of claim 1wherein the first web resource is a web page.
 7. The method of claim 1wherein the first web resource is a file for producing at least one of asound and a movie.
 8. A method of caching web resources, comprising thesteps of: accessing a first web resource; and caching the first webresource, if the first web resource is subsequently accessed more than apre-determined number of times.
 9. The method of claim 8 wherein thefirst web resource is cached in a random access memory.
 10. The methodof claim 8 wherein the first web resource is cached in nonvolatilememory.
 11. The method of claim 10 wherein the nonvolatile memory is oneof a magnetic disk and a flash electrically erasable programmable readonly memory (flash EEPROM).
 12. The method of claim 8 further comprisingthe steps of: accessing a web resource other than the first webresource; and retrieving the cached first web resource in response to asubsequent request to access the first web resource.
 13. The method ofclaim 8 wherein the first web resource is a web page.
 14. The method ofclaim 8 wherein the first web resource is a file for producing at leastone of a sound and a movie.
 15. A method of caching web resources,comprising the steps of: accessing a plurality of web resources; andcaching accessed web resources as cached web resources in accordancewith one of a number of times accessed, a frequency of access, or aduration of access.
 16. The method of claim 15 wherein web resources arecached in random access memory.
 17. The method of claim 15 wherein webresources are cached in nonvolatile memory.
 18. The method of claim 15wherein the nonvolatile memory is at least one of a magnetic disk and aflash electrically erasable programmable read only memory (flash EPROM).19. The method of claim 15 further comprising the step of: retrieving acached web resource from a cache in response to an access request for apreviously accessed web resource, if the cached web resource correspondsto the previously accessed web resource.
 20. The method of claim 15wherein an accessed web resource is selected for caching if the accessedweb resource is accessed a pre-determined number of times within apre-determined time period.
 21. The method of claim 15 wherein anaccessed web resource is selected for caching if the accessed webresource is accessed a pre-determined number of times.
 22. The method ofclaim 15 wherein an accessed web resource is selected for caching if noother web resource is accessed after a pre-determined period of time.23. The method of claim 15 wherein the first web resource is a web page.24. The method of claim 15 wherein the first web resource is a file forproducing at least one of a sound, an image, and a movie.
 25. Anapparatus comprising: storage media containing caching logic for cachingweb resources, wherein the caching logic includes instructions to cacheselected web resources as cached web resources in accordance with atleast one of a number of times accessed, a frequency of access, or aduration of access, wherein the selected web resources correspond to asubset of a plurality of accessed web resources.
 26. The apparatus ofclaim 25 further comprising: a cache, wherein the caching logic includesinstructions to retrieve a cached web resource from the cache inresponse to an access request for a previously accessed web resource, ifthe cached web resource corresponds to the previously accessed webresource.
 27. The apparatus of claim 25 wherein an accessed web resourceis selected for caching if the accessed web resource is accessed apre-determined number of times within a pre-determined time period. 28.The method of claim 25 wherein an accessed web resource is selected forcaching if the accessed web resource is accessed a pre-determined numberof times.
 29. The method of claim 25 wherein an accessed web resource isselected for caching if no other web resource is accessed after apre-determined period of time.
 30. The apparatus of claim 25 wherein theinstructions form a portion of at least one of an operating system and abrowser.